Replace sscanf(..., "<regular expression>", ...) with step-by-step lower level code.
authoroliskoli <oliskoli>
Thu, 30 Nov 2006 01:36:43 +0000 (01:36 +0000)
committeroliskoli <oliskoli>
Thu, 30 Nov 2006 01:36:43 +0000 (01:36 +0000)
magproto.c

index e48a9d56077b5b991de49e7365629f428b074660..df67ee403e818519d6b0339eab19e2b5e8172bb2 100644 (file)
@@ -969,11 +969,20 @@ mag_rteparse(char *rtemsg)
 
        /* Explorist has a route name here */
        if (explorist) {
-               char rten[1024];
-               int n2;
-               sscanf(rtemsg + n, ",%[^,]%n", rten, &n2);
-               n += n2;
-               rte_name = xstrdup(rten);
+               char *ca, *ce;
+               
+               ca = rtemsg + n;
+               is_fatal(*ca++ != ',', MYNAME ": Wrong formated line!");
+
+               ce = strchr(ca, ',');
+               is_fatal(ce == NULL, MYNAME ": Wrong formated line!");
+
+               if (ca == ce)
+                       xasprintf(&rte_name, "Route%d", rtenum);
+               else
+                       rte_name = xstrndup(ca, ce - ca);
+               
+               n += ((ce - ca) + 1);
        }
 
 #endif